import { fileURLToPath, URL } from 'node:url';
import path from 'node:path';
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
// @ts-ignore
import eslintPlugin  from 'vite-plugin-eslint';
import zipPack from 'vite-plugin-zip-pack';
import stylelintPlugin from 'vite-plugin-stylelint';
// 配置element plus
// 按需导入element plus
import AutoImport from 'unplugin-auto-import/vite';
import Components from 'unplugin-vue-components/vite';
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers';
import dayjs from 'dayjs';

// https://vitejs.dev/config/
export default defineConfig({
    base: '/project-name/',
    plugins: [
        vue(),
        // 配置element plus的自动引入
        AutoImport({
            resolvers: [ElementPlusResolver()],
        }),
        Components({
            resolvers: [ElementPlusResolver()],
        }),
        // 配置eslint自动保存
        eslintPlugin({
            emitError: true,
            fix: true, // 自动修复 ESLint 错误
            include: ['**/*.js', '**/*.jsx', '**/*.ts', '**/*.tsx', '**/*.vue'], // 需要进行 lint 的文件路径
        }),
        // 配置打包后输入zip的压缩文件到dist目录
        // @ts-ignore
        zipPack({
            inDir: fileURLToPath(new URL('./dist', import.meta.url)), // 文件输入目录
            outDir: 'dist', // 输出目录
            outFileName: `dist_${dayjs().format('YYYYMMDDHHmmss')}.zip`, // 文件名
        }),
        stylelintPlugin({
            fix: true,
            // include: ['src/**/*.{vue,css,less}'],
            include: ['src/**/*.vue', 'src/**/*.css', 'src/**/*.less'],
            lintOnStart: true,
            emitError: true,
        })
    ],
    resolve: {
        alias: {
            // 配置@对应src
            // fileURLToPath 主要用于处理文件 URL 到文件系统路径的转换，适用于处理 ES 模块的 import.meta.url。
            // path.resolve(__dirname) 主要用于解析出文件的绝对路径，可以用于构建文件系统路径或解析相对路径。
            '@': fileURLToPath(new URL('./src', import.meta.url))
            // '@utils': path.resolve(__dirname, 'src/utils/utils')
            // '@utils': path.resolve(__dirname, 'src/utils')
        }
    },
    server: {
        port: 8989,
        proxy: {
            '/test': {
                target: 'http://14.23.158.106:30345',
                changeOrigin: true,
                rewrite: (path) => path.replace('/test', '')
            },
            '/test1': {
                target: 'https://ug.baidu.com',
                changeOrigin: true,
                rewrite: (path) => path.replace('/test1', '')
            }
        }
    }
});
